package com.bestcem.xm.qdes.service.impl;

import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.bestcem.xm.component.mybatis.service.impl.XmServiceImpl;
import com.bestcem.xm.qdes.entity.QdesProjectExtraAttr;
import com.bestcem.xm.qdes.mapper.QdesProjectExtraAttrMapper;
import com.bestcem.xm.qdes.service.QdesProjectExtraAttrService;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.Map;

/**
 * 项目额外属性
 */
@Service
public class QdesProjectExtraAttrServiceImpl extends XmServiceImpl<QdesProjectExtraAttrMapper, QdesProjectExtraAttr> implements QdesProjectExtraAttrService {

    /**
     * 根据项目id查询敏感信息数据
     *
     * @param projectId
     * @return
     */
    @Override
    public QdesProjectExtraAttr getByProjectId(String projectId) {
        //查询
        LambdaQueryWrapper<QdesProjectExtraAttr> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(QdesProjectExtraAttr::getProjectId, projectId);
        QdesProjectExtraAttr qdesProjectextraattr = baseMapper.selectList(queryWrapper)
                .stream().findFirst().orElse(new QdesProjectExtraAttr());

        return qdesProjectextraattr;
    }

    /**
     * 设置项目id查询敏感信息数据
     *
     * @param projectId
     * @return
     */
    @Override
    public Map putByProjectId(String projectId, JSONObject param) {
        Map map = new HashMap<>();
        JSONObject array = param.getJSONObject("customAttr");

        QdesProjectExtraAttr qdesProjectExtraAttr = new QdesProjectExtraAttr();
        qdesProjectExtraAttr.setProjectId(projectId);
        qdesProjectExtraAttr.setCustomAttr(array.toJSONString());
        //查询
        LambdaQueryWrapper<QdesProjectExtraAttr> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(QdesProjectExtraAttr::getProjectId, projectId);
        QdesProjectExtraAttr qdesProjectextraattr = baseMapper.selectList(queryWrapper)
                .stream().findFirst().orElse(new QdesProjectExtraAttr());
        if (ObjectUtil.isNull(qdesProjectextraattr.getId())) {
            baseMapper.insert(qdesProjectExtraAttr);
            map.put("id", qdesProjectExtraAttr.getId());
            return map;
        } else {
            baseMapper.update(qdesProjectExtraAttr, queryWrapper);
            map.put("id", qdesProjectextraattr.getId());
            return map;
        }
    }
}
